package com.ecut.property_project.model.contract;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public class ContractHead {
    List<ContractCharge> chargeList;
    List<ContractRentFree> rentFreeList;
    List<ContractSuite> suiteList;
    /**
    * 虚拟合同号
    */
    private String contractId;

    /**
    * ！支行部门
    */
    private String deptName;

    /**
    * 甲方名称
    */
    private String partyAName;

    /**
    * 乙方名称
    */
    private String partyBName;

    /**
    * 合同面积
    */
    private BigDecimal contractArea;

    /**
    * 合同类型
    */
    private Object contractType;

    /**
    * 合同总金额
    */
    private BigDecimal totalAmount;

    /**
    * 合同应收金额（含税）
    */
    private BigDecimal receivableAmount;

    /**
    * 合同本金金额
    */
    private BigDecimal principalAmount;

    /**
    * 合同已收金额
    */
    private BigDecimal receivedAmount;

    /**
    * 合同开始日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date startDate;

    /**
    * 合同结束日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date endDate;

    /**
    * 合同签订日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date signDate;

    /**
    * ！合同状态
    */
    private Object contractStatus;

    /**
    * 入行时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date entryTime;

    /**
    * 合同终止日期
    */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date terminationDate;

    /**
    * 终止原因
    */
    private String terminationReason;

    /**
    * 终止人
    */
    private String terminator;

    public List<ContractCharge> getChargeList() {
        return chargeList;
    }

    public void setChargeList(List<ContractCharge> chargeList) {
        this.chargeList = chargeList;
    }

    public List<ContractRentFree> getRentFreeList() {
        return rentFreeList;
    }

    public void setRentFreeList(List<ContractRentFree> rentFreeList) {
        this.rentFreeList = rentFreeList;
    }

    public List<ContractSuite> getSuiteList() {
        return suiteList;
    }

    public void setSuiteList(List<ContractSuite> suiteList) {
        this.suiteList = suiteList;
    }

    public String getContractId() {
        return contractId;
    }

    public void setContractId(String contractId) {
        this.contractId = contractId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getPartyAName() {
        return partyAName;
    }

    public void setPartyAName(String partyAName) {
        this.partyAName = partyAName;
    }

    public String getPartyBName() {
        return partyBName;
    }

    public void setPartyBName(String partyBName) {
        this.partyBName = partyBName;
    }

    public BigDecimal getContractArea() {
        return contractArea;
    }

    public void setContractArea(BigDecimal contractArea) {
        this.contractArea = contractArea;
    }

    public Object getContractType() {
        return contractType;
    }

    public void setContractType(Object contractType) {
        this.contractType = contractType;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getReceivableAmount() {
        return receivableAmount;
    }

    public void setReceivableAmount(BigDecimal receivableAmount) {
        this.receivableAmount = receivableAmount;
    }

    public BigDecimal getPrincipalAmount() {
        return principalAmount;
    }

    public void setPrincipalAmount(BigDecimal principalAmount) {
        this.principalAmount = principalAmount;
    }

    public BigDecimal getReceivedAmount() {
        return receivedAmount;
    }

    public void setReceivedAmount(BigDecimal receivedAmount) {
        this.receivedAmount = receivedAmount;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public Date getSignDate() {
        return signDate;
    }

    public void setSignDate(Date signDate) {
        this.signDate = signDate;
    }

    public Object getContractStatus() {
        return contractStatus;
    }

    public void setContractStatus(Object contractStatus) {
        this.contractStatus = contractStatus;
    }

    public Date getEntryTime() {
        return entryTime;
    }

    public void setEntryTime(Date entryTime) {
        this.entryTime = entryTime;
    }

    public Date getTerminationDate() {
        return terminationDate;
    }

    public void setTerminationDate(Date terminationDate) {
        this.terminationDate = terminationDate;
    }

    public String getTerminationReason() {
        return terminationReason;
    }

    public void setTerminationReason(String terminationReason) {
        this.terminationReason = terminationReason;
    }

    public String getTerminator() {
        return terminator;
    }

    public void setTerminator(String terminator) {
        this.terminator = terminator;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", contractId=").append(contractId);
        sb.append(", deptName=").append(deptName);
        sb.append(", partyAName=").append(partyAName);
        sb.append(", partyBName=").append(partyBName);
        sb.append(", contractArea=").append(contractArea);
        sb.append(", contractType=").append(contractType);
        sb.append(", totalAmount=").append(totalAmount);
        sb.append(", receivableAmount=").append(receivableAmount);
        sb.append(", principalAmount=").append(principalAmount);
        sb.append(", receivedAmount=").append(receivedAmount);
        sb.append(", startDate=").append(startDate);
        sb.append(", endDate=").append(endDate);
        sb.append(", signDate=").append(signDate);
        sb.append(", contractStatus=").append(contractStatus);
        sb.append(", entryTime=").append(entryTime);
        sb.append(", terminationDate=").append(terminationDate);
        sb.append(", terminationReason=").append(terminationReason);
        sb.append(", terminator=").append(terminator);
        sb.append("]");
        return sb.toString();
    }
}